<?php
/**
 * @author: helei
 * @createTime: 2016-07-20 18:31
 * @description:
 */

/**
 * 客户端需要继承该接口，并实现这个方法，在其中实现对应的业务逻辑
 * Class TestNotify
 * anthor helei
 */
namespace app\home\controller;
use think\db;

class PaymentNotify implements \Payment\Notify\PayNotifyInterface
{

    public function notifyProcess(array $data)
    {
         $out_trade_no = isset($data['out_trade_no']) ? $data['out_trade_no']:'';
         if(!empty($out_trade_no)){
             
            cache('trade_notify_callback',$data,3600);//记录缓存  用于正式上线后的判断
            
            if($data['trade_status'] == 'TRADE_SUCCESS'){
               $pay_res = Db::name('payment')->where("out_trade_no",$data['out_trade_no'])->field('payment_id,oid')->find();
               if($pay_res){
                  Db::name("payment")->where("oid = {$pay_res['oid']} and payment_id <> {$pay_res['payment_id']}")->delete(); 
                  
                  Db::name("payment")->where('payment_id',$pay_res['payment_id'])->setField("status",2);
    
                  $param = [
                      'last_time'   => time(),
                      'state_pay'   => 2,
                      'state_trade' => 2
                  ];
                  Db::name("goods_order")->where("id",$pay_res['oid'])->update($param);
                  
                  write_order_log($pay_res['oid'],'线上完成订单支付！');
               }    
            } 
            
         }
         // 执行业务逻辑，成功后返回true
         //var_dump($data);
         return true;
    }
}